The application and use of bar codes and matrix codes are well known and growing. Bar codes and matrix codes are forms of "dataforms," which for present purposes are defined to include all arrangements whereby data is fixed in some form of machine readable copy. Thus, dataforms include one and two dimensional bar codes, matrix codes and graphic codes, as well as words and numbers and other symbols, which may be printed or etched on paper, plastic cards and metallic and other items. Dataforms may be printed in invisible ink, magnetically recorded via magnetic strips or magnetic ink fonts, electromagnetically recorded via RF tags, engraved, stamped, tattooed (on skin), formed by ion doping (for semiconductor wafers) or biochemical binding, etc.
In the utilization of dataforms, data originally encoded is recovered for further use in a variety of ways. For example, a printed bar code may be optically scanned to derive reflectance values which are digitized, stored in buffer memory and subsequently decoded to recover the data encoded in the bar code. Regardless of the particular type of dataform, an image is typically acquired and stored as pixel values for further processing. An image of a bar code or matrix code existing in a graphic image can be acquired by use of a scanner, a laser scanner or other suitable device which is capable of distinguishing between different reflective values of light reflected from a dataform. Thus, for example, a bar code typically comprises black or dark colored bar type elements printed on a white or light colored background area, with white or light colored spaces between the elements of the bar code. The spaces are typically the same color as the background area, but may be of a different light color in this example. In other examples the elements of a bar code or matrix code are white or light colored and are defined by black or darker colored spaces and background area.
In other applications, such as laser engraving on silicon wafers, illumination may result in a dark and light pattern or relationship in one orientation and an opposite light and dark relationship in a different orientation. In addition to pixel values representing reflective values of light ("light" being defined as encompassing the entire electromagnetic spectrum for present purposes), in other arrangements, pixel values representative of reflective values may be based upon reflection of sound waves or other mediums from a dataform of an appropriate configuration. In any arrangement in which a dataform is arranged to be read on the basis of reflective values, such reflective values may typically be stored as pixel values in an image buffer memory or other storage medium in bit map or other form which, representative of pixel values for an image, may utilize any appropriate data storage format.
The use of bar code dataforms for product identification purposes has achieved widespread acceptance. Typically, the manufacturer of a product generates a bar code dataform which represents a unique product identification key. The bar code dataform is used in conjunction with a computer accessible database. The identification key is associated with or, using computer terminology, points to a record address in a data file stored on a database secondary storage device.
A product address consists of specific data values for data items or fields comprising the file. For example, data items in a simple pricing file may include a product stock keeping unit number, a product descriptor and a price per unit.
A typical one dimensional (1D) bar code dataform consists of a single row of varying width parallel dark bars separated by varying width spaces. Start and stop patterns are provided at the beginning and end of the bar code dataform to indicate the boundaries of the actual coding area. The width of the bars and spaces in the coding area represent numbers. A unique product identification key is assigned for each product and converted or encoded into a unique bar code dataform according to the selected bar coding logic.
In use, the bar code dataform is scanned to identify a product and retrieve information relating to the product. The scanned image is converted or decoded into its numerical representation, i.e., the product identification key. The product identification key is not itself a record address for a file but rather is converted into a record address by a mathematical algorithm. This is necessary because there may be a plurality of files associated with a product. For example there may be a pricing file, an inventory file and a purchasing file each requiring a different algorithm to convert a product's identification key to a corresponding record address for the product in that file.
Typically, a merchandiser, i.e., a wholesaler, distributor or retailer, will use the identification key as part of a pricing and inventory control system. For example, at the retail level, a retailer utilizing a computerized point of sales network for pricing and inventory will have at least two files accessible to the central computer controlling the network; a pricing file and an inventory file. The pricing file correlates a product's stock keeping unit identification number with the current price of the item, while the inventory file indicates the number of product units on hand. In this scenario, two mathematical algorithms are used to convert the product's bar code identification number into corresponding record addresses in the pricing file and the inventory file, respectively.
At the retail level, a point of sales terminal includes a bar code dataform reader which scans and decodes the product's bar code dataform and communicates the decoded identification key to a computer along with a signal indicative of a purchase. The computer employs the appropriate mathematical algorithms to access the pricing and inventory files. The current price, stock keeping unit number and product descriptor for the product being purchased is retrieved from the pricing file and communicated to the point of sale terminal. The price of the product is displayed at the point of sale terminal and an appropriate purchase receipt is generated for the customer. Additionally, the computer decrements the inventory file to reflect removal of the product from inventory.
Unfortunately, while the manufacturer's bar code dataform is valuable to merchandisers, its utility is limited because the original bar code dataform does not reflect transactional information relating to sales of the product as the product moves through the various level in its distribution channel (e.g., manufacturing or importation level, assembly level, wholesale level, distribution level, repackaging level, retail level, etc.)
A merchandiser will find it valuable to have a bar code dataform which provides more than just a product identification key. For example, a retailer may wish to incorporate information relating to where and when the product was purchased, at what price, where is it being stored, to which store will it be shipped. If the retailer has modified the product or added an option, for example, a car dealer rustproofs a new car received from the manufacturer, the retailer may want to modify the manufacturer's bar code dataform to reflect the value added. Upon sale of the product, the retailer may wish to modify the manufacturer's bar code dataform to incorporate sales transaction information, e.g., who bought the product; on what date was the product purchased; at what price; under what invoice number; is there a discount or promotional program associated with the product; and where is the product to be delivered?
The addition of new information will often necessitate the use of a different bar code dataform format than the one selected by the manufacturer. Most manufacturer's use a 1D bar code dataform such as the UPC bar code which has a very limited data capacity. A stacked or two dimensional (2D) bar code dataform may be utilized by a merchandiser to increase data capacity.
A 2D bar code dataform permits a greater amount of encoded data to be stored in a given bar code coding area. Instead of having a coding area occupied by a single row of bar code, as in a 1D bar code dataform, a 2D bar code dataform divides the total coding area into a plurality of parallel rows, each row representing an independent coding area permitting multiple rows of bar code. Additionally, more sophisticated coding strategies have been developed which permit a greater density of data as compared to the original varying width format of the UPC bar code.
A 2D bar code dataform is disclosed in U.S. application Ser. No. 08/280,490 filed on Jul. 26, 1994, entitled "Packet Bar Code Encoding and Decoding," which is incorporated in its entirety herein by reference.
The following example illustrates the desirability of providing a distributor of books with an apparatus which would have the capability of scanning the original bar code dataform on a product, adding additional data to the scanned data and generating a modified bar code dataform label to be affixed to the product, the modified bar code dataform incorporating the additional data.
Distributors of many products with a limited market life cycle, such as books, are contractually obligated to buy back unsold merchandise from retailers after a certain period of time. The retailer will often receive several shipments of the same book from a distributor over the course of the book's market life, paying a different price each time.
The books include a bar code dataform, typically a UPC bar code, imprinted on the back cover by the publisher, but the price that the retailer pays the distributor is, of course, not reflected in the publisher's bar code dataform. When the time comes for the distributor to buy back the retailer's unsold books, the retailer returns the books and alleges that the unsold books are the ones that were purchased at the highest price during the book's market life so that he or she can receive the largest possible refund from the distributor.
With prior art systems, the distributor had no means of distinguishing among the returned books to ascertain the retailer's true purchase price and, therefore, was forced to repurchase the unsold books at the highest price paid by the retailer. If the distributor affixed a second bar code dataform label to the books shipped to the retailer which incorporated sales transaction information including the price paid by the retailer, the distributor would be able to scan the second bar code dataform label on the returned books and determine the price paid by the retailer for each of the returned books. If the second bar code dataform label also included the date the book was shipped to the retailer, scanning the returned book's second bar code dataform label would provide information to the distributor regarding how long the retailer has held the book in inventory and whether the retailer is properly "rotating" his or her stock using a first in, first out method of inventory control.